package com.love.cloud.auth;

import java.util.Map;
import java.util.Set;

/**
 * @author hongdongqu
 */
public interface RemoteAuthProvider {
    /**
     * 清除相关用户的客户端对应全部token
     * @param userName
     * @param clientIds
     * @return
     */
    Object removeTokenByUserName(String userName, Set<String> clientIds);

    /**
     * 删除token(主要用于注销,清空全部token信息的慎用)
     * @param token
     * @return
     */
    Object removeToken(String token);

    /**
     * 移除accessToken
     * @param token
     * @return
     */
    Object removeAccessToken(String token);

    /**
     * 移除全部的accessToken
     * @return
     */
    void removeAllAccessToken();

    /**
     * 设置最新的用户信息通过token
     * @return
     */
    void setNewUserInfoByToken(String token);

    /**
     * 设置最新的用户信息通过userName
     * @param userName
     * @param clientIds
     */
    void setNewUserInfoByUserName(String userName, Set<String> clientIds);
    /**
     * 查询token的列表
     * @param params
     * @return
     */
    Object tokenList(Map<String, Object> params);
}
